package DAO;

import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import util.HibernateUtil;
import TO.EditoraTO;
import TO.UsuarioTO;

public class EditoraDAO {
		
	public EditoraDAO(){
	}
	
	public static boolean inserir(EditoraTO editora) {
		
		try {
			Session sessao = HibernateUtil.getSession();
						
			Transaction transaction = sessao.beginTransaction();
			sessao.save(editora);
			
			transaction.commit();
			sessao.close();
			
			return true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			return false;
		}		
	}
	
	public static boolean atualizar(EditoraTO editora) {
		
		try {
			Session sessao = HibernateUtil.getSession();
						
			Transaction transaction = sessao.beginTransaction();
			sessao.update(editora);
			
			transaction.commit();
			sessao.close();
			
			return true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			return false;
		}		
	}
	
	public static boolean deletar(EditoraTO editora) {
		boolean resultado = false;
		try {
			Session sessao = HibernateUtil.getSession();
			Transaction transaction = sessao.beginTransaction();
			
			sessao.delete(editora);
			transaction.commit();
			sessao.close();
			
			resultado = true;
			
		} catch(Exception e){
			System.out.println(e.getMessage());
			resultado = false;
		}
		
		return resultado;
	}
	

	public static List<EditoraTO>  consultar(String nome){
		 
		List<EditoraTO> lista = new ArrayList<EditoraTO>(); 
		try {
			Session session = HibernateUtil.getSession();  
		    
		    lista = session.createQuery("from EditoraTO where nome = ?")
	    	.setString(0, nome)
	    	.list();
			
		    session.close();
			
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return lista;
	}

	public static EditoraTO  consultar(Integer id){
		 
		List<EditoraTO> editoras = new ArrayList<EditoraTO>(); 
		EditoraTO editora = new EditoraTO();
		try {
			Session session = HibernateUtil.getSession();  
		    
		    editoras = session.createQuery("from EditoraTO where id = ?")
	    	.setInteger(0, id)
	    	.list();
		    session.close();
		    
		    editora = editoras.get(0);
			
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return editora;
	}
	
	public static List<EditoraTO>  listar(){
		
	    List<EditoraTO> lista = new ArrayList<EditoraTO>(); 
	    
		try {
		    Session session = HibernateUtil.getSession();  
		    
		    lista = session.createQuery("from EditoraTO").list();
			
		    session.close();
		    
		} catch(Exception e)
			{System.out.println(e.getMessage());
		}
		
		return lista;
	}
	

}
